/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ac.persistence;
import ac.entities.Lugar;
import com.ibatis.sqlmap.client.SqlMapClient;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;


/**
 * Gestiona la persistencia de Lugares en la base de datos
 * @author prometheus
 */
public class PersistLugar {

    /**
     * Inserta un nuevo registro de lugar en la base de datos
     * @param l el lugar a ser insertado
     * @return true si la operación fue exitosa
     */
    public boolean insertLugar (Lugar l) {
        boolean resultado = false;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            sqlMap.insert("insertLugar", l);
            resultado = true;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * Busca todos los lugares de un tipo dado
     * @param tipo el tipo que se desea buscar
     * @return todos los lugares de ese tipo
     */
    public ArrayList<Lugar> buscarLugaresPorTipo(String tipo) {
        ArrayList<Lugar> resultado = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (ArrayList) sqlMap.queryForList("buscarLugarPorTipo", tipo);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
            return resultado;
        }
    }

    /**
     * Busca todos los hijos de un lugar dado
     * @param idPadre id del padre
     * @return todos los hijos
     */
    public ArrayList<Lugar> buscarHijosLugar(int idPadre) {
        ArrayList<Lugar> resultado = null;
        try {
            SqlMapClient sqlMap = SqlConnector.getInstance().getReady();
            resultado = (ArrayList) sqlMap.queryForList("buscarHijosLugar", idPadre);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
            return resultado;
        }
    }
}
